package com.charger.cooperation.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.charger.chargingStation.domain.Chargingstation;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.charger.common.annotation.Excel;
import com.charger.common.core.domain.BaseEntity;

import java.io.Serializable;
import java.util.*;

/**
 * 投资商管理对象 investors
 * 
 * @author ruoyi
 * @date 2024-11-22
 */
@Data
public class Investors implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    @TableId(type = IdType.AUTO)
    private Long investorId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    @TableField(value = "investorName")
    private String investorName;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String phone;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String customer;

    /** $column.columnComment */
    private Long customerId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String investorType;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long amount;

    /** $column.columnComment */
    private String sex;

    /** $column.columnComment */
    private String identificationNumber;

    /** $column.columnComment */
    private String address;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long projectsId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long chargingstationId;
    @TableField(exist = false,select = false)
    private List<Projects> projectsList = new ArrayList();
    @TableField(exist = false,select = false)
    private List<LChargingstation> chargingstationList = new ArrayList<>();
    private List<Chargingstation> chargingstations;
    @TableField(exist = false,select = false)
    private List<Long> projectId;
    private Long del;

    public void setInvestorId(Long investorId) 
    {
        this.investorId = investorId;
    }

    public Long getInvestorId() 
    {
        return investorId;
    }
    public void setInvestorName(String investorName) 
    {
        this.investorName = investorName;
    }

    public String getInvestorName() 
    {
        return investorName;
    }
    public void setPhone(String phone) 
    {
        this.phone = phone;
    }

    public String getPhone() 
    {
        return phone;
    }
    public void setCustomer(String customer) 
    {
        this.customer = customer;
    }

    public String getCustomer() 
    {
        return customer;
    }
    public void setCustomerId(Long customerId) 
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }
    public void setInvestorType(String investorType) 
    {
        this.investorType = investorType;
    }

    public String getInvestorType() 
    {
        return investorType;
    }
    public void setAmount(Long amount) 
    {
        this.amount = amount;
    }

    public Long getAmount() 
    {
        return amount;
    }
    public void setSex(String sex) 
    {
        this.sex = sex;
    }

    public String getSex() 
    {
        return sex;
    }
    public void setIdentificationNumber(String identificationNumber) 
    {
        this.identificationNumber = identificationNumber;
    }

    public String getIdentificationNumber() 
    {
        return identificationNumber;
    }
    public void setAddress(String address) 
    {
        this.address = address;
    }

    public String getAddress() 
    {
        return address;
    }
    public void setProjectsId(Long projectsId) 
    {
        this.projectsId = projectsId;
    }

    public Long getProjectsId() 
    {
        return projectsId;
    }
    public void setChargingstationId(Long chargingstationId) 
    {
        this.chargingstationId = chargingstationId;
    }

    public Long getChargingstationId() 
    {
        return chargingstationId;
    }


    /** 搜索值 */
    @JsonIgnore
    @TableField(exist = false)
    private String searchValue;

    /** 创建者 */
    @TableField(exist = false)
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "createTime")
    private Date createTime;

    /** 更新者 */
    @TableField(exist = false)
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date updateTime;

    /** 备注 */
    @TableField(exist = false)
    private String remark;

    /** 请求参数 */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params;

    public String getSearchValue()
    {
        return searchValue;
    }

    public void setSearchValue(String searchValue)
    {
        this.searchValue = searchValue;
    }

    public String getCreateBy()
    {
        return createBy;
    }

    public void setCreateBy(String createBy)
    {
        this.createBy = createBy;
    }

    public Date getCreateTime()
    {
        return createTime;
    }

    public void setCreateTime(Date createTime)
    {
        this.createTime = createTime;
    }

    public String getUpdateBy()
    {
        return updateBy;
    }

    public void setUpdateBy(String updateBy)
    {
        this.updateBy = updateBy;
    }

    public Date getUpdateTime()
    {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime)
    {
        this.updateTime = updateTime;
    }

    public String getRemark()
    {
        return remark;
    }

    public void setRemark(String remark)
    {
        this.remark = remark;
    }

    public Map<String, Object> getParams()
    {
        if (params == null)
        {
            params = new HashMap<>();
        }
        return params;
    }

    public void setParams(Map<String, Object> params)
    {
        this.params = params;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("investorId", getInvestorId())
            .append("investorName", getInvestorName())
            .append("phone", getPhone())
            .append("customer", getCustomer())
            .append("customerId", getCustomerId())
            .append("investorType", getInvestorType())
            .append("amount", getAmount())
            .append("sex", getSex())
            .append("identificationNumber", getIdentificationNumber())
            .append("createTime", getCreateTime())
            .append("address", getAddress())
            .append("projectsId", getProjectsId())
            .append("chargingstationId", getChargingstationId())
            .toString();
    }
}
